package com.zenithmind.mall.service;

import com.zenithmind.mall.pojo.dto.CartDTO;
import com.zenithmind.mall.pojo.vo.CartVO;

import java.util.List;

/**
 * 购物车服务接口
 * 
 * @author ZenithMind Team
 * @since 2025-06-09
 */
public interface CartService {

    /**
     * 添加商品到购物车
     * 
     * @param cartDTO 购物车信息
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean addToCart(CartDTO cartDTO, String userId);

    /**
     * 更新购物车商品数量
     * 
     * @param id 购物车ID
     * @param quantity 数量
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean updateCartQuantity(String id, Integer quantity, String userId);

    /**
     * 删除购物车商品
     * 
     * @param id 购物车ID
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean removeFromCart(String id, String userId);

    /**
     * 批量删除购物车商品
     * 
     * @param ids 购物车ID列表
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean removeFromCart(List<String> ids, String userId);

    /**
     * 查询用户购物车列表
     * 
     * @param userId 用户ID
     * @return 购物车列表
     */
    List<CartVO> getCartList(String userId);

    /**
     * 选中/取消选中购物车商品
     * 
     * @param id 购物车ID
     * @param selected 是否选中
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean selectCartItem(String id, Integer selected, String userId);

    /**
     * 全选/取消全选购物车商品
     * 
     * @param selected 是否选中
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean selectAllCartItems(Integer selected, String userId);

    /**
     * 删除选中的购物车商品
     * 
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean removeSelectedItems(String userId);

    /**
     * 获取购物车商品数量
     * 
     * @param userId 用户ID
     * @return 商品数量
     */
    Integer getCartCount(String userId);

    /**
     * 清空购物车
     * 
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean clearCart(String userId);
}
